﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Lola.Datos;

namespace Lola.Datos.Persistencia
{
    public static class pControlAlcoholemia
    {
        public static Boolean RegistrarControlAlcoholemia(String codigoServicio, int legajo, int resultado)
        {
            Boolean res = false;
            using (SeminarioIEntities con = new SeminarioIEntities())
            {
                try
                {
                    var q = from ch in con.ChoferServicios
                            where ch.Chofer.legajo == legajo
                            & ch.Servicio.cod == codigoServicio
                            select ch;

                    if (q.First().idTestAlc.HasValue)
                    {
                        return false;
                    }

                    ControlAlcoholemia newCon = new ControlAlcoholemia();
                    newCon.fechaConAlc = DateTime.Now;
                    newCon.resAlc = resultado;
                    newCon.apto = true;

                    var qq = from ca in con.ControlAlcoholemias
                             orderby ca.idTestAlc descending
                             select ca;

                    int maxid = 0;
                    if (qq.Count() > 0)
                    {
                        maxid = qq.First().idTestAlc + 1;
                    }
                    newCon.idTestAlc = maxid;

                    con.AddToControlAlcoholemias(newCon);
                    con.SaveChanges();
                    q.First().idTestAlc = maxid;
                    con.SaveChanges();
                    return true;
                }
                catch (Exception e)
                {
                    return false;
                }
            }

        }


        public static List<DTO.Grilla.dtoControlAlcoholemia> getControlesAlcoholemia()
        {
            List<DTO.Grilla.dtoControlAlcoholemia> res = new List<DTO.Grilla.dtoControlAlcoholemia>();
            using (SeminarioIEntities con = new SeminarioIEntities())
            {
                var q = from cal in con.ControlAlcoholemias select cal;

                foreach (ControlAlcoholemia cal in q)
                {
                    var qq = from cho in con.ChoferServicios where cal.idTestAlc == cho.ControlAlcoholemia.idTestAlc
                            select cho;

                    if (qq.Count() == 0)
                    {
                        break;
                    }

                    ChoferServicio chocho = qq.First();

                    DTO.Grilla.dtoControlAlcoholemia dtoCa = new DTO.Grilla.dtoControlAlcoholemia();

                    dtoCa.Resultado = cal.resAlc.ToString();
                    dtoCa.Fecha = cal.fechaConAlc.ToString();
                    dtoCa.Conductor = chocho.Chofer.apellido.Trim() + chocho.Chofer.nombre.Trim();
                    dtoCa.Servicio = chocho.Servicio.cod;

                    res.Add(dtoCa);
                }
            }

            return res;
        }
    }
}
